package com.fansl.allround.daemon.quartz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fansl.allround.daemon.quartz.dto.ScheduleJobDto;
import com.fansl.allround.daemon.quartz.entity.ScheduleJob;
import com.fansl.allround.daemon.quartz.entity.ScheduleJobLog;

import java.util.List;

/**
 * @author fansl
 * @Description: TODO
 * @date 2020/1/10 16:55
 */
public interface ScheduleJobService extends IService<ScheduleJob> {
    /**
     * 保存任务
     * @param scheduleJob
     * @return
     */
    Boolean saveJob(ScheduleJobDto scheduleJob);
    /**
     * 更新任务
     * @param scheduleJob
     * @return
     */
    Boolean updateJob(ScheduleJobDto scheduleJob);
    /**
     * 删除任务
     * @param jobId
     * @return
     */
    Boolean deleteJob(Long jobId);
    /**
     * 执行任务
     *
     * @param jobId
     * @return
     */
    Boolean runJob(Long jobId);

    /**
     * 暂停任务
     *
     * @param jobId
     * @return
     */
    Boolean pauseJob(Long jobId);

    /**
     * 恢复任务
     *
     * @param jobId
     * @return
     */
    Boolean resumeJob(Long jobId);
    /**
     * 保存日志
     *
     * @param scheduleJobLog
     * @return
     */
    Boolean saveJobLog(ScheduleJobLog scheduleJobLog);

    /**
     * 查询任务日志详情
     *
     * @param jobLogId
     * @return
     */
    ScheduleJobLog infoLog(Long jobLogId);

    /**
     * 查询任务的日志
     *
     * @param jobId
     * @return
     */
    List<ScheduleJobLog> listJobLog(Long jobId);

    /**
     * 分页查询任务日志
     *
     * @param page
     * @param scheduleJobLog
     * @return
     */
    IPage<ScheduleJobLog> pageJobLog(Page page, ScheduleJobLog scheduleJobLog);

    /**
     * 更新定时任务的执行情况（状态，执行次数）
     * @param jobId
     * @param update
     * @return
     */
    Boolean updateExecuteDetail(Long jobId, ScheduleJob update);
}
